#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <assert.h>

//没有指明路径，会在形成可执行程序的当前路径下创建
#define FILE_NAME(number) "log.txt"#number


int main()
{
    //打开文件
    int fd1 = open(FILE_NAME(1),O_WRONLY | O_CREAT | O_TRUNC,0666);//以"w"方式打开
    int fd2 = open(FILE_NAME(2),O_WRONLY | O_CREAT | O_TRUNC,0666);//以"w"方式打开
    int fd3 = open(FILE_NAME(3),O_WRONLY | O_CREAT | O_TRUNC,0666);//以"w"方式打开
    int fd4 = open(FILE_NAME(4),O_WRONLY | O_CREAT | O_TRUNC,0666);//以"w"方式打开

    printf("fd:%d\n",fd1);
    printf("fd:%d\n",fd2);
    printf("fd:%d\n",fd3);
    printf("fd:%d\n",fd4);

    //关闭文件
    close(fd1);
    close(fd2);
    close(fd3);
    close(fd4);




    //打开文件
    //int fd = open(FILE_NAME,O_WRONLY | O_CREAT | O_TRUNC,0666);//以"w"方式打开
    //int fd = open(FILE_NAME,O_WRONLY | O_CREAT | O_APPEND,0666);//以"a"方式打开
//    int fd = open(FILE_NAME,O_RDONLY);//以"r"方式打开
//    if(fd < 0)
//    {
//        perror("open");
//        return 1;
//    }
//    
//    //读取
//    char buffer[1024];
//    ssize_t num = read(fd,buffer,sizeof(buffer)-1);//读取文件到buffer中
//    if(num > 0) buffer[num] = 0;//读取有效字符到buffer后，加'\0',即为C语言中的字符串
//    printf("%s",buffer);
//
//    //写入
//    //int cnt = 5;
//    //char outBuffer[64];
//    //while(cnt)
//    //{
//    //    sprintf(outBuffer,"%s:%d\n","aaaa",cnt--);//格式化数据转字符串
//    //    //写入时,string要不要+1呢？-->不用加1
//    //    //向文件写入时,只写入有效字符,即不包括'\0',不需要+1
//    //    write(fd,outBuffer,strlen(outBuffer));//把outBuffer写入到文件中
//    //}
//
//    //关闭文件
//    close(fd);
//
//    
//
//    //细节问题
//    //以w方式单纯的打开文件,C会自动的清空内部的数据
//    //普通文件的默认权限为664-->原因是0666 & ~umask
//    // FILE *fp = fopen(FILE_NAME,"w");//r,w,r+(读写,不存在出错),w+(读写,不存在创建),a(append,追加),a+(读写[追加写])
//    // FILE *fp = fopen(FILE_NAME,"r");//r,w,r+(读写,不存在出错),w+(读写,不存在创建),a(append,追加),a+(读写[追加写])
//    // FILE *fp = fopen(FILE_NAME,"a");//r,w,r+(读写,不存在出错),w+(读写,不存在创建),a(append,追加),a+(读写[追加写])
//    // if(fp == NULL)
//    // {
//    //     perror("fopen");
//    //     return 1;
//    // }
// 
//    //  char buffer[64];//fgets函数从文件中读取一行数据后，最后会添加一个\n,所以在buffer中一般会留一个位置用于添加\n,以防出错
//    //  while(fgets(buffer,sizeof(buffer)-1,fp) != NULL)
//    //  {
//    //      buffer[strlen(buffer)-1] = 0;//用于处理fgets添加的\n
//    //      puts(buffer);//按行打印buffer中的值
//    //  }
//
//
//    // int cnt = 5;
//    // while(cnt)
//    // {
//    //     fprintf(fp,"%s:%d\n","hello world",cnt--);
//    // }
//    //
//
//    //fclose(fp);
//    //fp = NULL;

    return 0;
}


